package com.etime.shycourse.controller.wxcoupon;

import com.etime.shy.common.BaseMessage;
import com.etime.shy.common.ListMessage;
import com.etime.shycourse.dto.CouponMyDto;
import com.etime.shycourse.services.wxcoupon.interfaces.WXCouponUseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 优惠券使用相关的数据接口（在订单结算时选择优惠券进行结算相关接口）
 * @author zw
 * @since 2022-3-16
 */
@Api(tags = "微信-优惠券-与抵扣券，打折券使用相关的数据接口")
@RestController
@RequestMapping("/wx/rebate")
public class WXCouponUseController {

    @Autowired
    private WXCouponUseService wxCouponUseService;
    /**
     * 根据订单id查询用户在此订单中可用的优惠券列表
     * @param orderid 订单id
     * @return
     */
    @ApiOperation("获取订单可以使用的优惠券列表")
    @ApiImplicitParam(name = "orderid",value = "订单id")
    @GetMapping("/getusedcoupon/{orderid}")
    public ListMessage<CouponMyDto> selectUsedCoupon(@PathVariable("orderid") Integer orderid){
        ListMessage<CouponMyDto> msg = new ListMessage<>();
        List<CouponMyDto> list = wxCouponUseService.selectOrderUsedCouponList(orderid);
        msg.setCode(1);
        msg.setDatalist(list);
        return msg;
    }

    /**
     * 选择使用优惠券
     * 业务逻辑：
     * 在选择使用优惠券后，需要更新订单信息，在订单中添加优惠券的使用情况。但是不修改订单状态
     * 订单状态在支付完成之后进行修改。
     * @param orderid
     * @param couponreciveid
     * @return
     */
    @ApiOperation("选择使用优惠券功能接口")
    @ApiImplicitParams({
            @ApiImplicitParam(name="orderid",value = "订单id"),
            @ApiImplicitParam(name="couponreciveid",value = "优惠券领取id")
    })
    @PostMapping("/use/{orderid}/{couponreciveid}")
    public BaseMessage useCoupon(@PathVariable("orderid") Integer orderid,
                                 @PathVariable("couponreciveid") Integer couponreciveid){
        BaseMessage msg = new BaseMessage();
        int rtn = wxCouponUseService.updateOrderByUseCoupon(orderid,couponreciveid);
        if(rtn>0){
            //使用优惠券成功
            msg.setCode(1);
            msg.setMsg(orderid.toString());
        }else{
            //使用优惠券失败
            msg.setCode(0);
            msg.setMsg(orderid.toString());
        }
        return msg;
    }
}
